package work.base.jvm.reference;

import work.entity.Student;

import java.io.IOException;
import java.lang.ref.SoftReference;

/**
 * 关于java中四种引用 强软弱虚
 */
public class ReferenceTest {
    public static void main(String[] args) throws IOException {
        // 强引用 没有引用指向对象的时候 对象会被回收
//        ReferenceEntity referenceEntity = new ReferenceEntity();
//        referenceEntity = null;
//        System.gc();
//        System.in.read();

        // 软引用 SoftReference本身是软引用
        // 启动的时候设置参数 -Xmx20M 堆内存最大20M;
        // 软引用适合缓存
        SoftReference<byte[]> m =new SoftReference<>(new byte[1024*1024*10]);
        System.out.println(m.get());
        System.gc();
        try{
            Thread.sleep(500);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        // System.gc()之后软引用没有被回收
        System.out.println(m.get());
        // 再分配的数组 heap堆装不下了  软引用被回收
        byte[] b = new byte[1024*1014*15];
        System.out.println(m.get());

    }
}
